﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TCPlib.ModbusTcp
{
    public class ByteArray
    {
        private List<byte> bytes = new List<byte>();

        //索引器返回值是byte类型
        public byte this[int index]
        {
            get
            {
                return bytes[index];
            }
            set
            {
                bytes[index] = value;
            }
        }
        public int length => bytes.Count; //返回集合的长度
        public byte[] array => bytes.ToArray(); //返回集合的数组

        [Description("清空集合类型") ]
        public void Clearlist()
        {
            bytes.Clear(); //清空集合
        }

        /// <summary>
        /// 添加一个byte[]类型的元素
        /// </summary>
        /// <param name="items"></param>
        public void Add(byte[] items)
        {
            bytes.AddRange(items);
        }

        public void Add(byte item)
        {
            Add(new byte[1] { item });
        }

        public void Add(byte item1,byte item2)
        {
            Add(new byte[2] { item1, item2 });
        }
        public void Add(byte item1, byte item2, byte item3)
        {
            Add(new byte[3] { item1, item2, item3 });
        }
        public void Add(byte item1, byte item2, byte item3, byte item4)
        {
            Add(new byte[4] { item1, item2, item3, item4 });
        }
        public void Add(byte item1, byte item2, byte item3, byte item4, byte item5)
        {
            Add(new byte[5] { item1, item2, item3, item4, item5 });
        }

        public void Add(ByteArray byteArrey)
        {
            Add(byteArrey.array);
        }
        public void Add(ushort value)
        {
            bytes.Add((byte)(value >> 8));
            bytes.Add((byte)value);
        }
        public void Add(short value)
        {
            bytes.Add((byte)(value >> 8));
            bytes.Add((byte)value);
        }

    }
}
